package euler.p001_050;

import euler.MainEuler;

public class Euler030 extends MainEuler {
    /*
        Surprisingly there are only three numbers that can be
        written as the sum of fourth powers of their digits:

            1634 = 1^4 + 6^4 + 3^4 + 4^4
            8208 = 8^4 + 2^4 + 0^4 + 8^4
            9474 = 9^4 + 4^4 + 7^4 + 4^4

        As 1 = 1^4 is not a sum it is not included.

        The sum of these numbers is 1634 + 8208 + 9474 = 19316.

        Find the sum of all the numbers that can be
        written as the sum of fifth powers of their digits.

     */
    public String resolve(int power) {

        int maxPerDigit=(int)Math.pow(9, power);
        int max = 1;

        while (max < (int)(Math.log10(max*maxPerDigit))+1) {
            max++;
        }

        int sumofallthenumbers = 0;

        for (int i = 2; i <= max*maxPerDigit; i++) {
            int suma = 0;
            int j = i;

            while (j > 0) {
                int mod = j % 10;
                j = (j - mod) / 10;
                suma+=(int)Math.pow(mod, power);
            }

            if (suma == i) {
                sumofallthenumbers+=suma;
            }
        }

        return String.valueOf(sumofallthenumbers);
    }

}
